
#? 1.输入一个字符串，判断字符串中有多少个字母？多少个数字？多少个其他符号?

from dataclasses import replace
from itertools import count
from unittest import result


text_str = 'hello, nice to meet you. i am 18. my birthday is 1999-05-23'
Letter_tol = 0
Number_tol = 0
Other_tol = 0
for ele in text_str:
    if ele.isalpha():
        Letter_tol +=1
    elif ele.isdecimal():
        Number_tol +=1
    else:
        Other_tol +=1
print(f"字母的个数为{Letter_tol}个，数字个数为{Number_tol}个， 其他字符为{Other_tol}个")
'''
字母的个数为33个，数字个数为10个， 其他字符为16个
'''

#? 2.以下是一段歌词，请从这段歌词中统计出朋友出现的次数。
text_str = '''这些年一个人，风也过，
雨也走，有过泪，有过错, 还记得坚持甚么，真
爱过才会懂，会寂寞会回首，终有梦终有你在心中。
朋友一生一起走，那些日子不再有，一句话，一辈子，一生情，一杯酒。
朋友不曾孤单过，一声朋友你会懂，还有伤，还有痛，还要走，还有我。'''
field = "朋友"
print(text_str.count(field))
#!输出结果是 3

'''
3.编写敏感词过滤程序

说明：在网络程序中，如聊天室、聊天软件等，经常需要对一些用户所提交的聊天内容中的敏感性词语进行过滤。
如“性”、“色情”、“爆炸”、“恐怖”、“枪”、“军火”等，这些都不可以在网上进行传播.
要求输入一段文本，如果包含以上的敏感词汇，需要*替换掉
'''
test_str = "军火交易中，有很多恐怖分子，携带枪支，自制炸弹。\n损害公共安全，导致发生爆炸；并且还传播色情视频和组织性交易要严打严查"
replace_list = ["性","色情","爆炸","恐怖","枪","军火"]
for ele in replace_list:
    print(ele)
    if test_str.find(ele) != -1:
        data = test_str.replace(ele,"*"*len(ele))
print(data)

#? 4.输入一个用户名，判断用户名是否合法。用户名要求：由英文字母或数字组成，长度是6到12位
import string
username= input()
if len(username) >=6 and len(username) <=12:
    for ch in username:
        if ch not in string.ascii_letters+string.digits:
            print(f"{username}不合法")
            break
    else:
        print(f"{username}合法")
else:
    print(f"{username}不合法")

#? 5.随机生成长度为5的验证码， 验证码的组成是英文字母或者数字
import string
import random
data = string.ascii_letters+string.digits
code = "".join([random.choice(data) for ele in range(5)])
print(code)

#? 6.实现将字符串  "1,2,3"   变成列表 ["1","2","3"]
str_ts = '1,2,3'
print(str_ts.split(','))

#? 7.判断输入的字符串是否是 .py 结束
data = input()
result = data.endswith(".py")
print(result)

#? 8.输入一个字符串，将字符串中所有的数字符取出来产生一个新的字符串 
data  =  'abc1shj23kls99+2kkk'
new_str = ""
for ch in data:
    if ch.isdigit():
        new_str += ch
print(new_str)

#? 9.输入用户名，判断用户名是否合法.
#? 用户名的要求：必须由数字和字母且只能有数字和字母，并且第一个字符是大写字母
import  string
username = input()
letters_count = 0
digits_count = 0
if username[0].isupper():
    for ch in username:
        if ch in string.ascii_letters:
            letters_count += 1
        elif ch in string.digits:
            digits_count +=1
    if digits_count == 0 or (letters_count+digits_count != len(username)):
        print(f"{username}不合法")
    else:
        print(f"{username}合法")
else:
    print(f"{username}不合法")

#? 10.输入两个字符串，打印两个字符串中公共的字符，如果没有公共字符打印 公共字符不存在

str_o = input()
str_t = input()
equal_list = []
for ch in str_o:
    if ch in str_t and ch not in equal_list:
        equal_list.append(ch)
equal_str = "".join(equal_list)
print(equal_str)

#? 11.4.如下字符串:  "01#张三#60-02#李四#90-03#王五#70", 
#? 每一部分表示  学号#姓名#分数，提取学生信息存放于列表中，并按照成绩对学生降序排序
data = "01#张三#60-02#李四#90-03#王五#70"
stu_list = []
for info in data.split('-'):
    stu = info.split("#")
    print(stu)
    stu_list.append(dict(zip(["学号","姓名","分数"],stu)))
stu_list.sort(reverse=True,key = lambda x:x["分数"])
print(stu_list)